/**
 * 
 */
package br.com.sglf.web;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import br.com.sglf.domain.Usuario;
import br.com.sglf.service.UsuarioService;
import br.com.sglf.support.Constantes;
import br.com.sglf.support.FacesBeanSupport;

/**
 * @author jackmaruno
 *
 */
@SessionScoped
@ManagedBean (name="usuarioBean")
public class UsuarioBean extends FacesBeanSupport {

	/**
	 * 
	 */
	public UsuarioBean(){ 
		listUsuario = new UsuarioService().findUsuario();
	}
	
	/**
	 * @return
	 */
	public String find(){
		try {
			listUsuario = new UsuarioService().findUsuarioByParametros(nome, login, email, cpf, perfil);
		} catch (Exception e) {
			addError(""+e.toString());
		}
		return "usuarios";
	}
	
	/**
	 * @return
	 */
	public String save(){
		try {
			new UsuarioService().saveUsuario(usuario);
			clean();
			addMessage("Usuario salvo com sucesso.");
		} catch (Exception e) {
			addError(""+e.toString());
		}
		return "usuarios"; 
	}
	
	/**
	 * @return
	 */
	public String alterStatus(){
		try {
			usuario.setStatus(!usuario.isStatus());
			new UsuarioService().saveUsuario(usuario);
			clean();
			addMessage("Usuario alterado com sucesso.");
		} catch (Exception e) {
			addError(""+e.toString());
		}
		return "usuarios"; 
	}

	//#####################################################################################
	//#                          PRIVATE                                                  # 
	//#####################################################################################
	/**
	 * 
	 */
	private void clean(){
		usuario = null;
		listUsuario = null;
		nome = null;
		login = null;
		email = null;
		cpf = null;
		perfil = null;
	}

	//#####################################################################################
	//#                          COMBOS                                                   # 
	//#####################################################################################

	public List<SelectItem> getPerfis() {
	    List<SelectItem> listSelectItem = new ArrayList<SelectItem>();  
		listSelectItem.add(new SelectItem(null, "..:: Escolha ::.."));  
		for(String var : Constantes.PERFIS){
			listSelectItem.add(new SelectItem(var,var));  
		}
        	  
        return listSelectItem;
	    
	}
	//#####################################################################################
	//#                          VARIABLES                                                # 
	//#####################################################################################
	
	private Usuario usuario;
	private List<Usuario> listUsuario;
	private String nome, login, email, cpf, perfil;
	
	
	
	/**
	 * @return the perfil
	 */
	public String getPerfil() {
		return perfil;
	}

	/**
	 * @param perfil the perfil to set
	 */
	public void setPerfil(String perfil) {
		this.perfil = perfil;
	}

	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the login
	 */
	public String getLogin() {
		return login;
	}

	/**
	 * @param login the login to set
	 */
	public void setLogin(String login) {
		this.login = login;
	}
 

	/**
	 * @return the email
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * @param email the email to set
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * @return the cpf
	 */
	public String getCpf() {
		return cpf;
	}

	/**
	 * @param cpf the cpf to set
	 */
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	/**
	 * @return the usuario
	 */
	public Usuario getUsuario() {
		if(usuario == null){
			usuario = new Usuario();
		}
		return usuario;
	}

	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	/**
	 * @return the listUsuario
	 */
	public List<Usuario> getListUsuario() { 
		return listUsuario;
	}

	/**
	 * @param listUsuario the listUsuario to set
	 */
	public void setListUsuario(List<Usuario> listUsuario) {
		this.listUsuario = listUsuario;
	}
	 
	
}
